home *** CD-ROM | disk | FTP | other *** search
/ QRZ! Ham Radio 1 / QRZ Ham Radio Callsign Database - December 1993.iso / ucsd / packet / tcpip / sys5 / iscwmpst.z / iscwmpst / tcp / isc-src / convers / sys5unix.c < prev   
Encoding:
C/C++ Source or Header  |  1991-10-29  |  2.0 KB  |  150 lines

  1. #include <stdio.h>
  2. #include <signal.h>
  3. #ifdef SPASSWD
  4. #include <shadow.h>
  5. #endif
  6. #include <ctype.h>
  7. #include <sys/bsdtypes.h>
  8. #include <sys/types.h>
  9. #include <sys/stat.h>
  10.  
  11.  
  12. rename(s1, s2)
  13. char *s1, *s2;
  14. {
  15.     char tmp[50];
  16.     int i;
  17.     unlink(s2);
  18.     i = link(s1, s2);
  19.     if(i == 0){
  20.             /** unlink(s1); **/
  21.     }
  22.     return(i);
  23. }
  24.  
  25. /* wait stuff */
  26.  
  27. #define MAXZOMBIE 32
  28. struct zombie {
  29.     int pid;
  30.     int status;
  31. } zombie [MAXZOMBIE];
  32.  
  33. int wait3 (statloc, options, dummy)
  34.     int *statloc;
  35.     int options;
  36.     int *dummy; {
  37.     int i, pid;
  38.     
  39.     do {
  40.         for (i = 0; i < MAXZOMBIE; i++)
  41.             if (zombie[i].pid) {
  42.                 if (statloc)
  43.                     *statloc = zombie[i].status;
  44.                 pid = zombie[i].pid;
  45.                 zombie[i].pid = 0;
  46.                 return pid;
  47.             }
  48.     } while (!options);
  49.     return 0;
  50. }
  51.  
  52. int
  53. sigchild_handler(sig, code)
  54.     int sig;
  55.     int code; {
  56.     int victim, status, i;
  57.     victim = wait (&status);
  58.     signal (sig, sigchild_handler);
  59.     for (i = 0; i < MAXZOMBIE; i++)
  60.         if (!zombie[i].pid) {
  61.             zombie[i].status = status;
  62.             zombie[i].pid = victim;
  63.             return;
  64.         }
  65. }
  66.  
  67. u_short swab(val)
  68. u_short val;
  69. {
  70.    union swab
  71.    {
  72.       u_short val1;
  73.       char chr[2];
  74.    } swab1;
  75.  
  76.    char help;
  77.  
  78.    swab1.val1 = val;
  79.    help = swab1.chr[1];
  80.    swab1.chr[1] = swab1.chr[0];
  81.    swab1.chr[0] = help;
  82.  
  83.    return (swab1.val1);
  84. }
  85.  
  86. #ifdef SPASSWD
  87. /** /etc/shadow processing **/
  88.  
  89. struct spwd *getspwdentry(name)
  90. char  *name;
  91. {
  92.  
  93. #define DEFAULTUSER    "guest"
  94.  
  95.   FILE * fp;
  96.   char  *cp;
  97.   char  username[128];
  98.   int  fd;
  99.   int  uid;
  100.   struct spwd *sw;
  101.  
  102.   /* Fix user name */
  103.  
  104.   for (cp = username; isalnum(uchar(*name)); *cp++ = tolower(uchar(*name++))) ;
  105.   *cp = '\0';
  106.   if (!isalpha(uchar(*username)) || strlen(username) > 8)
  107.     strcpy(username, DEFAULTUSER);
  108.  
  109.   /* Search existing shadow entry */
  110.  
  111.   while ((sw = getspent()) && strcmp(username, sw->sp_namp)) ;
  112.   endspent();
  113.   if (sw) return sw;
  114.   return 0;
  115. }
  116. #endif 
  117.  
  118. /* Some dummy functions */
  119.  
  120. void
  121. abort()
  122. {
  123.    exit();
  124. }
  125.  
  126. rtprio()
  127. {
  128. }
  129.  
  130. setresuid(uid, uid2, arg)
  131. int uid, uid2, arg;
  132. {
  133. }
  134.  
  135. setresgid(gid, gid2, arg)
  136. int gid, gid2, arg;
  137. {
  138. }
  139.  
  140. sigvector(sig, vec)
  141. int sig, vec;
  142. {
  143. signal(sig, SIG_IGN); 
  144. }
  145.  
  146. settimeofday()
  147. {
  148. }
  149.  
  150.